home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / AIncludes / PCCardTuples.a < prev    next >
Encoding:
Text File  |  1997-08-12  |  14.5 KB  |  389 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        PCCardTuples.a
  3. ;
  4. ;    Contains:    List of PCMCIA tuple types and definitions of tuple contents.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Release:    Universal Interfaces 3.0.1
  8. ;
  9. ;    Copyright:    © 1994-1997 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__PCCARDTUPLES__') = 'UNDEFINED' THEN
  19. __PCCARDTUPLES__ SET 1
  20.  
  21.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  22.     include 'Types.a'
  23.     ENDIF
  24.  
  25.  
  26. MAX_TUPLE_SIZE                    EQU        256
  27. ; ————————————————————————————————————————————————————————————————————————
  28. ;    Defines for Tuple codes
  29. ;————————————————————————————————————————————————————————————————————————
  30.  
  31.  
  32. CISTPL_NULL                        EQU        $00
  33. CISTPL_DEVICE                    EQU        $01
  34. CISTPL_LONGLINK_CB                EQU        $02
  35. CISTPL_INDIRECT                    EQU        $03
  36. CISTPL_CONFIG_CB                EQU        $04
  37. CISTPL_CFTABLE_ENTRY_CB            EQU        $05
  38. CISTPL_LONGLINK_MFC                EQU        $06
  39. CISTPL_BAR                        EQU        $07
  40. CISTPL_CHECKSUM                    EQU        $10
  41. CISTPL_LONGLINK_A                EQU        $11
  42. CISTPL_LONGLINK_C                EQU        $12
  43. CISTPL_LINKTARGET                EQU        $13
  44. CISTPL_NO_LINK                    EQU        $14
  45. CISTPL_VERS_1                    EQU        $15
  46. CISTPL_ALTSTR                    EQU        $16
  47. CISTPL_DEVICE_A                    EQU        $17
  48. CISTPL_JEDEC_C                    EQU        $18
  49. CISTPL_JEDEC_A                    EQU        $19
  50. CISTPL_CONFIG                    EQU        $1A
  51. CISTPL_CFTABLE_ENTRY            EQU        $1B
  52. CISTPL_DEVICE_OC                EQU        $1C
  53. CISTPL_DEVICE_OA                EQU        $1D
  54. CISTPL_DEVICE_GEO                EQU        $1E
  55. CISTPL_DEVICE_GEO_A                EQU        $1F
  56. CISTPL_MANFID                    EQU        $20
  57. CISTPL_FUNCID                    EQU        $21
  58. CISTPL_FUNCE                    EQU        $22
  59. CISTPL_SWIL                        EQU        $23
  60. CISTPL_VERS_2                    EQU        $40
  61. CISTPL_FORMAT                    EQU        $41
  62. CISTPL_GEOMETRY                    EQU        $42
  63. CISTPL_BYTEORDER                EQU        $43
  64. CISTPL_DATE                        EQU        $44
  65. CISTPL_BATTERY                    EQU        $45
  66. CISTPL_ORG                        EQU        $46
  67. CISTPL_VENDOR                    EQU        $FE
  68. CISTPL_END                        EQU        $FF
  69.  
  70. ; ————————————————————————————————————————————————————————————————————————
  71. ;    Tuple Data Block Definitions
  72. ;————————————————————————————————————————————————————————————————————————
  73.  
  74.  
  75. ; ------------    Device Information Tuple (01H, 17H)    -----------                            
  76.  
  77. DeviceIDTuple            RECORD 0
  78. TPLDEV_TYPE_WPS_SPEED     ds.b    1                ; offset: $0 (0)        ;  Device Type Code: 7-4, WPS: 3,  Device Speed: 2-0
  79. deviceData                 ds.b    253                ; offset: $1 (1)
  80. sizeof                     EQU *                    ; size:   $FE (254)
  81.                         ENDR
  82.  
  83. TPLDEV_TYPE_MASK                EQU        $F0                    ; device type mask for TPLDEV_TYPE_WPS_SPEED
  84. TPLDEV_TYPE_EXTENDED            EQU        $E0                    ; device type value for extended type
  85. TPLDEV_WPS_MASK                    EQU        $08                    ; write-protect switch mask for TPLDEV_TYPE_WPS_SPEED
  86. TPLDEV_SPEED_MASK                EQU        $07                    ; device speed mask for TPLDEV_TYPE_WPS_SPEED
  87. TPLDEV_DSPEED_NULL                EQU        $00                    ; speed for null device type
  88. TPLDEV_DSPEED_250NS                EQU        $01                    ; 250ns card access time
  89. TPLDEV_DSPEED_200NS                EQU        $02                    ; 200ns card access time
  90. TPLDEV_DSPEED_150NS                EQU        $03                    ; 150ns card access time
  91. TPLDEV_DSPEED_100NS                EQU        $04                    ; 100ns card access time
  92. TPLDEV_EXTENDED_SPEED            EQU        $07                    ; device speed value for extended speed
  93. TPLDEV_SPEED_EXPONENT            EQU        $07                    ; extended byte exponent mask
  94. TPLDEV_SPEED_MANTISSA            EQU        $78                    ; extended byte mantissa mask
  95. TPLDEV_SPEED_EXTENDED_MASK        EQU        $80                    ; bit set if more extended speed data follows
  96.  
  97. ;     device ID types
  98.  
  99.  
  100. DTYPE_NULL                        EQU        0
  101. DTYPE_ROM                        EQU        1
  102. DTYPE_OTPROM                    EQU        2
  103. DTYPE_EPROM                        EQU        3
  104. DTYPE_EEPROM                    EQU        4
  105. DTYPE_FLASH                        EQU        5
  106. DTYPE_SRAM                        EQU        6
  107. DTYPE_DRAM                        EQU        7
  108. DTYPE_FUNCSPEC                    EQU        $0D
  109. DTYPE_EXTEND                    EQU        $0E
  110.  
  111. ; ---------------    Checksum Control Tuple (10H)    ---------------                            
  112.  
  113. ChecksumControlTuple    RECORD 0
  114. TPLCKS_ADDR                 ds.w    1                ; offset: $0 (0)        ;  offset to region to be checksummed, LSB first
  115. TPLCKS_LEN                 ds.w    1                ; offset: $2 (2)        ;  length of region to be checksummed, LSB first
  116. TPLCKS_CS                 ds.b    1                ; offset: $4 (4)        ;  checksum of the region
  117. reserved                 ds.b    1                ; offset: $5 (5)        ;  padding
  118. sizeof                     EQU *                    ; size:   $6 (6)
  119.                         ENDR
  120. ; ----------------    Long Link Multi-Function Tuple (06H)    ------                    
  121.  
  122. LongLinkMFCTuple        RECORD 0
  123. TPLMFC_NUM                 ds.b    1                ; offset: $0 (0)        ;  Number of sets of config registers for individual functions
  124. TPLMFC_TAS1                 ds.b    1                ; offset: $1 (1)        ;  CIS target address space for first function (00 = Attr, 01 = Common)
  125. TPLMFC_ADDR1             ds.l    1                ; offset: $2 (2)        ;  Target address of first CIS, unsigned long, lsb first
  126. TPLMFC_TAS2                 ds.b    1                ; offset: $6 (6)        ;  CIS target address space for second function (00 = Attr, 01 = Common)
  127.                          ORG 8
  128. TPLMFC_ADDR2             ds.b    4                ; offset: $8 (8)        ;  [MISALIGNED!] Target address of second CIS, unsigned long, lsb first
  129. ;  the following fields are of undetermined length and should be calculated at runtime
  130. ;  
  131. ;  UInt8        TPLMFC_TASn;
  132. ;  UInt32        TPLMFC_ADDRn;
  133. sizeof                     EQU *                    ; size:   $C (12)
  134.                         ENDR
  135. ; ----------------    Long Link Tuple (11H, 12H)    ----------------                            
  136.  
  137. LongLinkTuple            RECORD 0
  138. TPLL_ADDR                 ds.l    1                ; offset: $0 (0)        ;  target address, LSB first
  139. sizeof                     EQU *                    ; size:   $4 (4)
  140.                         ENDR
  141. ; -----------------    Link Target Tuple (13H)    ------------------                            
  142.  
  143. LinkTargetTuple            RECORD 0
  144. TPLL_TAG                 ds.b    3                ; offset: $0 (0)        ;  tag: should be 'C', 'I', 'S'
  145.                          ORG 4
  146. sizeof                     EQU *                    ; size:   $4 (4)
  147.                         ENDR
  148. ; ----------------    Level 1 Version Tuple (15H)    ---------------                            
  149.  
  150. Level1VersionTuple        RECORD 0
  151. TPLLV1_MAJOR             ds.b    1                ; offset: $0 (0)        ;  major version number (0x04)
  152. TPLLV1_MINOR             ds.b    1                ; offset: $1 (1)        ;  minor version number (0x01 for release 2.0 and 2.01)
  153. TPLLV1_INFO                 ds.b    1                ; offset: $2 (2) <-- really an array of length one ;  product information string, zero-terminated
  154.                          ORG 4
  155. sizeof                     EQU *                    ; size:   $4 (4)
  156.                         ENDR
  157. ; -------------    JEDEC Identifier Tuple (18H, 19H)    ------------                            
  158.  
  159. JEDECDeviceInfo            RECORD 0
  160. manufacturerID             ds.b    1                ; offset: $0 (0)
  161. manufacturerInfo         ds.b    1                ; offset: $1 (1)
  162. sizeof                     EQU *                    ; size:   $2 (2)
  163.                         ENDR
  164. JEDECIdentifierTuple    RECORD 0
  165. device                     ds        JEDECDeviceInfo ; offset: $0 (0) <-- really an array of length one
  166. sizeof                     EQU *                    ; size:   $2 (2)
  167.                         ENDR
  168. ; ---------    Configuration Tuple (1AH)    ----------                            
  169.  
  170. ConfigTuple                RECORD 0
  171. TPCC_SZ                     ds.b    1                ; offset: $0 (0)        ;  size of fields byte
  172. TPCC_LAST                 ds.b    1                ; offset: $1 (1)        ;  index number of last config entry
  173. TPCC_RADR                 ds.b    1                ; offset: $2 (2)        ;  config reg's base addr in reg. space
  174. reserved                 ds.b    1                ; offset: $3 (3)        ;  padding
  175. ;  the following fields are of undetermined length and should be calculated at runtime
  176. ; UInt32            TPCC_RMSK;
  177. ; UInt32            TPCC_RSVD;
  178. ; UInt32            TPCC_SBTPL;
  179. sizeof                     EQU *                    ; size:   $4 (4)
  180.                         ENDR
  181. ;     TPCC_RADR field definitions
  182.  
  183. TPCC_RASZ                        EQU        $03                    ; bits 1-0
  184. TPCC_RMSZ                        EQU        $3C                    ; bits 5-2
  185. TPCC_RFSZ                        EQU        $C0                    ; bits 7-6
  186.  
  187. ; ---------    Device Geometry Tuple (1EH, 1FH)    ----------
  188.  
  189. DeviceGeometry            RECORD 0
  190. DGTPL_BUS                 ds.b    1                ; offset: $0 (0)        ;  system bus width = 2^(n-1), n>0
  191. DGTPL_EBS                 ds.b    1                ; offset: $1 (1)        ;  erase block size = 2^(n-1), n>0
  192. DGTPL_RBS                 ds.b    1                ; offset: $2 (2)        ;  read block size = 2^(n-1), n>0
  193. DGTPL_WBS                 ds.b    1                ; offset: $3 (3)        ;  write block size = 2^(n-1), n>0
  194. DGTPL_PART                 ds.b    1                ; offset: $4 (4)        ;  partitioning size = 2^(n-1), n>0
  195. DGTPL_HWIL                 ds.b    1                ; offset: $5 (5)        ;  hardware interleave = 2^(n-1), n>0
  196. sizeof                     EQU *                    ; size:   $6 (6)
  197.                         ENDR
  198. DeviceGeometryTuple        RECORD 0
  199. device                     ds.b    42 * DeviceGeometry.sizeof ; offset: $0 (0)
  200. sizeof                     EQU *                    ; size:   $FC (252)
  201.                         ENDR
  202. ; ---------    Manufacturer Identification Tuple (20H)    ----------                            
  203.  
  204. ManufIDTuple            RECORD 0
  205. TPLMID_MANF                 ds.w    1                ; offset: $0 (0)        ;  PCMCIA PC Card manufacturer code
  206. TPLMID_CARD                 ds.w    1                ; offset: $2 (2)        ;  manufacturer information (part number and/or revision)
  207. sizeof                     EQU *                    ; size:   $4 (4)
  208.                         ENDR
  209. ; -----------    Function Identification Tuple (21H)    ------------                            
  210.  
  211. FunctionIDTuple            RECORD 0
  212. TPLFID_FUNCTION             ds.b    1                ; offset: $0 (0)        ;  PC card function code
  213. TPLFID_SYSINIT             ds.b    1                ; offset: $1 (1)        ;  system initialization bit mask
  214. sizeof                     EQU *                    ; size:   $2 (2)
  215.                         ENDR
  216. ;     function codes
  217.  
  218. TPLFID_MultiFunction            EQU        0
  219. TPLFID_Memory                    EQU        1
  220. TPLFID_SerialPort                EQU        2
  221. TPLFID_ParallelPort                EQU        3
  222. TPLFID_FixedDisk                EQU        4
  223. TPLFID_VideoAdapter                EQU        5
  224. TPLFID_NetworkLANAdapter        EQU        6
  225. TPLFID_AIMS                        EQU        7
  226. TPLFID_SCSI                        EQU        8
  227. TPLFID_Security                    EQU        9
  228.  
  229. ; ------------    Software Interleave Tuple (23H)    ---------------                            
  230.  
  231. SoftwareInterleaveTuple    RECORD 0
  232. TPLSWIL_INTRLV             ds.b    1                ; offset: $0 (0)        ;  software interleave
  233.                          ORG 2
  234. sizeof                     EQU *                    ; size:   $2 (2)
  235.                         ENDR
  236. ; -------    Level 2 Version and Information Tuple (40H)    --------                            
  237.  
  238. Level2VersionTuple        RECORD 0
  239. TPLLV2_VERS                 ds.b    1                ; offset: $0 (0)        ;  structure version (0x00)
  240. TPLLV2_COMPLY             ds.b    1                ; offset: $1 (1)        ;  level of compliance with the standard (0x00)
  241. TPLLV2_DINDEX             ds.w    1                ; offset: $2 (2)        ;  byte address of first data byte in card, LSB first
  242. TPLLV2_RSV6                 ds.b    1                ; offset: $4 (4)        ;  reserved, must be zero
  243. TPLLV2_RSV7                 ds.b    1                ; offset: $5 (5)        ;  reserved, must be zero
  244. TPLLV2_VSPEC8             ds.b    1                ; offset: $6 (6)        ;  vendor specific byte
  245. TPLLV2_VSPEC9             ds.b    1                ; offset: $7 (7)        ;  vendor specific byte
  246. TPLLV2_NHDR                 ds.b    1                ; offset: $8 (8)        ;  number of copies of CIS present on this device
  247. TPLLV2_OEM                 ds.b    1                ; offset: $9 (9) <-- really an array of length one ;  vendor of software that formatted card, zero-terminated
  248. TPLLV2_INFO                 ds.b    1                ; offset: $A (10) <-- really an array of length one ;  informational message about the card, zero-terminated
  249. reserved                 ds.b    1                ; offset: $B (11)        ;  padding
  250. sizeof                     EQU *                    ; size:   $C (12)
  251.                         ENDR
  252. ; --------------------    Format Tuple (41H)    --------------------                            
  253.  
  254. ;  additional information for disk type:
  255.  
  256. FormatDiskTuple            RECORD 0
  257. TPLFMT_BKSZ                 ds.w    1                ; offset: $0 (0)        ;     block size, or zero if unblocked format
  258. TPLFMT_NBLOCKS             ds.l    1                ; offset: $2 (2)        ;     number of data blocks in this partition
  259. TPLFMT_EDCLOC             ds.l    1                ; offset: $6 (6)        ;     location of error detection code, or zero if interleaved
  260. sizeof                     EQU *                    ; size:   $A (10)
  261.                         ENDR
  262. ;  additional information for disk type:
  263. FormatMemTuple            RECORD 0
  264. TPLFMT_FLAGS             ds.b    1                ; offset: $0 (0)        ;     various flags
  265. TPLFMT_RESERVED             ds.b    1                ; offset: $1 (1)        ;     reserved, set to zero
  266. TPLFMT_ADDRESS             ds.l    1                ; offset: $2 (2)        ;     physical location at which this memory partion must be mapped
  267. TPLFMT_EDCLOC             ds.l    1                ; offset: $6 (6)        ;     location of error detection code, or zero if interleaved
  268. sizeof                     EQU *                    ; size:   $A (10)
  269.                         ENDR
  270. FormatTuple                RECORD 0
  271. TPLFMT_TYPE                 ds.b    1                ; offset: $0 (0)        ;  format type code
  272. TPLFMT_EDC                 ds.b    1                ; offset: $1 (1)        ;  error detection method and length of error detection code
  273. TPLFMT_OFFSET             ds.l    1                ; offset: $2 (2)        ;  offset to first data byte in this partition
  274. TPLFMT_NBYTES             ds.l    1                ; offset: $6 (6)        ;  number of data bytes in this partition
  275. TPLFMT_DISK                 ds        FormatDiskTuple ; offset: $A (10)
  276.                          ORG 10
  277. TPLFMT_MEM                 ds        FormatMemTuple ; offset: $A (10)
  278. sizeof                     EQU *                    ; size:   $14 (20)
  279.                         ENDR
  280. ;     format types
  281.  
  282. TPLFMTTYPE_DISK                    EQU        0
  283. TPLFMTTYPE_MEM                    EQU        1
  284. TPLFMTTYPE_VS                    EQU        $80
  285. ;     error detection types
  286.  
  287.  
  288. TPLFMTEDC_NONE                    EQU        0
  289. TPLFMTEDC_CKSUM                    EQU        1
  290. TPLFMTEDC_CRC                    EQU        2
  291. TPLFMTEDC_PCC                    EQU        3
  292. TPLFMTEDC_VS                    EQU        8
  293. ;     bits in TPLFMT_FLAGS
  294.  
  295.  
  296. TPLFMTFLAGS_ADDR                EQU        0
  297. TPLFMTFLAGS_AUTO                EQU        1
  298.  
  299. ; ------------------    Geometry Tuple (42H)    --------------------                            
  300.  
  301. GeometryTuple            RECORD 0
  302. TPLGEO_SPT                 ds.b    1                ; offset: $0 (0)        ;  number of sectors per track
  303. TPLGEO_TPC                 ds.b    1                ; offset: $1 (1)        ;  number of tracks per cylinder
  304. TPLGEO_NCYL                 ds.w    1                ; offset: $2 (2)        ;  number of cylinders, total
  305. sizeof                     EQU *                    ; size:   $4 (4)
  306.                         ENDR
  307. ; -----------------    Byte-Order Tuple (43H)    -------------------                            
  308.  
  309. ByteOrderTuple            RECORD 0
  310. TPLBYTE_ORDER             ds.b    1                ; offset: $0 (0)        ;  byte order code
  311. TPLBYTE_MAP                 ds.b    1                ; offset: $1 (1)        ;  byte mapping code
  312. sizeof                     EQU *                    ; size:   $2 (2)
  313.                         ENDR
  314. ;     byte order codes
  315.  
  316. TYPBYTEORD_LOW                    EQU        0
  317. TYPBYTEORD_HIGH                    EQU        1
  318. TYPBYTEORD_VS                    EQU        $80
  319. ;     byte mapping codes
  320.  
  321.  
  322. TYPBYTEMAP_LOW                    EQU        0
  323. TYPBYTEMAP_HIGH                    EQU        1
  324. TYPBYTEMAP_VS                    EQU        $80
  325.  
  326. ; ----------    Card Initialization Date Tuple (44H)    ------------                            
  327.  
  328. CardInitDateTuple        RECORD 0
  329. TPLDATE_TIME             ds.w    1                ; offset: $0 (0)        ;  hours, minutes, seconds
  330. TPLDATE_DAY                 ds.w    1                ; offset: $2 (2)        ;  year, month, day
  331. sizeof                     EQU *                    ; size:   $4 (4)
  332.                         ENDR
  333. ; ----------    Battery-Replacement Date Tuple (45H)    ------------                            
  334.  
  335. BatteryReplaceDateTuple    RECORD 0
  336. TPLBATT_RDAY             ds.w    1                ; offset: $0 (0)        ;  last replacement date (year, month, day)
  337. TPLBATT_XDAY             ds.w    1                ; offset: $2 (2)        ;  battery expiration date (year, month, day)
  338. sizeof                     EQU *                    ; size:   $4 (4)
  339.                         ENDR
  340.  
  341. ; ----------------------    General Tuple    -----------------------                            
  342.  
  343. TupleBody                RECORD 0
  344. deviceID                 ds        DeviceIDTuple    ; offset: $0 (0)
  345.                          ORG 0
  346. checksum                 ds        ChecksumControlTuple ; offset: $0 (0)
  347.                          ORG 0
  348. link                     ds        LongLinkTuple    ; offset: $0 (0)
  349.                          ORG 0
  350. target                     ds        LinkTargetTuple ; offset: $0 (0)
  351.                          ORG 0
  352. level1                     ds        Level1VersionTuple ; offset: $0 (0)
  353.                          ORG 0
  354. jedecID                     ds        JEDECIdentifierTuple ; offset: $0 (0)
  355.                          ORG 0
  356. config                     ds        ConfigTuple        ; offset: $0 (0)
  357.                          ORG 0
  358. devGeo                     ds        DeviceGeometryTuple ; offset: $0 (0)
  359.                          ORG 0
  360. manufID                     ds        ManufIDTuple    ; offset: $0 (0)
  361.                          ORG 0
  362. funcID                     ds        FunctionIDTuple ; offset: $0 (0)
  363.                          ORG 0
  364. swil                     ds        SoftwareInterleaveTuple ; offset: $0 (0)
  365.                          ORG 0
  366. level2                     ds        Level2VersionTuple ; offset: $0 (0)
  367.                          ORG 0
  368. format                     ds        FormatTuple        ; offset: $0 (0)
  369.                          ORG 0
  370. geometry                 ds        GeometryTuple    ; offset: $0 (0)
  371.                          ORG 0
  372. order                     ds        ByteOrderTuple ; offset: $0 (0)
  373.                          ORG 0
  374. initDate                 ds        CardInitDateTuple ; offset: $0 (0)
  375.                          ORG 0
  376. battDate                 ds        BatteryReplaceDateTuple ; offset: $0 (0)
  377.                          ORG 0
  378. tupleData                 ds.b    254                ; offset: $0 (0)
  379. sizeof                     EQU *                    ; size:   $FE (254)
  380.                         ENDR
  381. Tuple                    RECORD 0
  382. TPL_CODE                 ds.b    1                ; offset: $0 (0)
  383. TPL_LINK                 ds.b    1                ; offset: $1 (1)
  384. TPL_BODY                 ds        TupleBody        ; offset: $2 (2)
  385. sizeof                     EQU *                    ; size:   $100 (256)
  386.                         ENDR
  387.     ENDIF ; __PCCARDTUPLES__ 
  388.  
  389.